package com.example.demo.service;

import com.example.demo.entity.Permission;
import com.example.demo.entity.Role;

import java.util.List;

/**
 * 权限服务接口
 * 定义权限相关业务操作
 */
public interface PermissionService {
    
    /**
     * 根据用户ID获取用户的所有角色
     * @param userId 用户ID
     * @return 角色列表
     */
    List<Role> getUserRoles(Long userId);
    
    /**
     * 根据用户ID获取用户的所有权限
     * @param userId 用户ID
     * @return 权限列表
     */
    List<Permission> getUserPermissions(Long userId);
    
    /**
     * 根据用户ID获取用户的角色编码列表
     * @param userId 用户ID
     * @return 角色编码列表
     */
    List<String> getUserRoleCodes(Long userId);
    
    /**
     * 根据用户ID获取用户的权限编码列表
     * @param userId 用户ID
     * @return 权限编码列表
     */
    List<String> getUserPermissionCodes(Long userId);
    
    /**
     * 检查用户是否有指定角色
     * @param userId 用户ID
     * @param roleCode 角色编码
     * @return 是否有角色
     */
    boolean hasRole(Long userId, String roleCode);
    
    /**
     * 检查用户是否有指定权限
     * @param userId 用户ID
     * @param permissionCode 权限编码
     * @return 是否有权限
     */
    boolean hasPermission(Long userId, String permissionCode);
}
